package test;

import base.entity.regitem.RegItem;
import base.factory.impl.RegItemFactory;
import base.list.FatSingleton;
import base.list.SrcDirRegItemsSingleton;
import base.util.ByteFileIOUtils;
import base.util.XMLUtils;

import java.io.File;

/**
 *  create by lyl
 *  2019.11.30
 */
public class FormatDisk {
    public static File file = new File(XMLUtils.getFilePath("disk"));

    public static void main(String[] args) {
        //format();
        start.Show();
    }
    /*
    格式化磁盘
     */
    public  void format(){
        // 格式化FAT表格， [1,1,1,0,0,0,.....,0,0] 前三个块分别是FAT表跟根等级项
        FatSingleton.INSTANCE.set(0, -1);
        FatSingleton.INSTANCE.set(1, -1);
        FatSingleton.INSTANCE.set(2, -1);
        for (int i = 3; i < FatSingleton.INSTANCE.size(); i++) {
            FatSingleton.INSTANCE.set(i, 0);
        }


        FatSingleton.INSTANCE.writeIntoFile();
        // 根目录登记项区域全部是空
        for (int i = 0; i < SrcDirRegItemsSingleton.INSTANCE.size(); i++) {
            RegItem r = RegItemFactory.getInstance().newDirInstance("$  ",(byte)0,(byte)0); // 建立一个空目录
            System.out.println(r);
            byte a = (byte)i;
            SrcDirRegItemsSingleton.INSTANCE.set(i, r);
        }

        // 根目录写入文件
        SrcDirRegItemsSingleton.INSTANCE.writeIntoFile();

        // 3.准备剩余磁盘容量的填充，并写入文件
        // 剩余125块盘块，一个盘块64个字节，全部填充0，需要125*64个0
//        for (int i = 3; i < 128; i++) {
//            DiskIOUtils.write(DiskIOUtils.FILLED_64BYTES_ZERO_ARRAY, i*64);
//        }
        // 下面的for是测试用的
        for (int i = 3; i < 128; i++) {
            byte[] bytes = new byte[64];
            for (int j = 0; j < 64; j++) {
                bytes[j] = (byte)i;
            }

            ByteFileIOUtils.write(file, bytes, i*64);
        }
    }
    public void show(){
        start.Show();
    }
}
